package com.gaojinqi.sys.modular.rbac.service;

import com.gaojinqi.base.common.service.BaseService;
import com.gaojinqi.sys.modular.rbac.model.Role;

import java.util.Collection;
import java.util.List;

/**
 * 角色 - 业务逻辑层接口
 *
 * @author gaojinqi
 * @version 1.0
 * @since 2020年04月21日
 */
public interface RoleService extends BaseService<Role, String> {

    /**
     * 根据用户ID查找该用户的所有可用角色ID
     */
    List<String> findRoleIdsByUserId(String userId);

    /**
     * 根据用户ID查找该用户的所有可用角色
     */
    List<Role> findRolesByUserId(String userId);

    /**
     * 根据用户名查找该用户的所有可用角色
     */
    List<Role> findRolesByUserName(String userName);

    /**
     * 根据角色编码查找角色
     */
    Role findByRole(String role);

    /**
     * 给指定用户ID设置角色
     */
    void assignRolesToUserId(String userId, Collection<String> roleIds);
}
